package com.eastfair.venueservice.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperService;
import com.eastfair.core.base.R;
import com.eastfair.venueservice.dto.ServicePriceListDTO;
import com.eastfair.venueservice.dto.ServicePriceListItemDTO;
import com.eastfair.venueservice.dto.ServicePriceListItemQuery;
import com.eastfair.venueservice.dto.ServicePriceListQuery;
import com.eastfair.venueservice.entity.ServicePriceListItem;
import com.eastfair.venueservice.vo.ServicePriceListItemVO;
import com.eastfair.venueservice.vo.ServicePriceListVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 服务价目信息表
 * </p>
 *
 * @author linan
 * @date 2022-07-21
 */
public interface ServicePriceListItemService extends SuperService<ServicePriceListItem> {

    /**
     * 添加价目服务项
     * @param servicePriceListItems servicePriceListItems
     * @return Boolean
     */
    Boolean addPriceListItems(ServicePriceListDTO servicePriceListItems);

    /**
     * 全量更新价目的开放对象
     * @param servicePriceListDTO servicePriceListDTO
     * @return Boolean
     */
    Boolean updateAllPriceListItem(ServicePriceListDTO servicePriceListDTO);

    /**
     * 查询价目下服务
     * @param servicePriceListItem servicePriceListItem
     * @return R<IPage<ServicePriceListItemVO>>
     */
    R<IPage<ServicePriceListItemVO>> queryPriceListItem(PageParams<ServicePriceListItemQuery> servicePriceListItem);

    /**
     * 通过展会id,系统编码查询价目
     * @param query query
     * @return R<ServicePriceListVO>
     */
    R<ServicePriceListVO> queryPriceListByExhibition(ServicePriceListQuery query);

    /**
     * 展会ID查询价目表详情.
     *
     * @param exhibitionManageId the exhibition manage id
     * @return the list
     */
    List<ServicePriceListItem> listByExhibitionManageId(Long exhibitionManageId);

    /**
     * 通过服务id删除价目
     * @param serviceItemId
     */
    void removeByServiceItemId(Long serviceItemId);

    /**
     * 更新价目下服务
     * @param servicePriceListItems servicePriceListItems
     * @return Boolean
     */
    Boolean updatePriceListItem(List<ServicePriceListItemDTO> servicePriceListItems);

    /**
     * 批量删除价目下服务
     * @param servicePriceListItems servicePriceListItems
     * @return Boolean
     */
    Boolean delPriceListItemBatch(List<ServicePriceListItemDTO> servicePriceListItems);

    /**
     * 通过价目表删除价目明细
     * @param servicePriceList servicePriceList
     */
    void delByServicePriceList(ServicePriceListDTO servicePriceList);

    /**
     * 通过价目id查询价目详情
     * @param query query
     * @return R<ServicePriceListVO>
     */
    R<ServicePriceListVO> queryPriceListById(ServicePriceListQuery query);

    /**
     * 批量删除价目下服务
     * @param dto dto
     * @return R<Boolean>
     */
    R<Boolean> saveAllPriceList(ServicePriceListDTO dto);
}
